【示例】Java调用webservice接口

您所在的位置:网站首页 java webservice接口调用案例 【示例】Java调用webservice接口

【示例】Java调用webservice接口

2024-07-12 00:02| 来源: 网络整理| 查看: 265

前言

Java语言调用webservice接口的方法多种多样,例如JAX-WS、AXIS、CXF等等,这里介绍的通过使用JAX-WS(Java API for XML Web Services)来调用Web服务,而且为https协议的服务,调用会相对一般的http多上一个ssl的证书校验。

过程 生成Soap客户端类 本项目中使用JDK自带的wsimport工具,来将我们的webservice服务生成一个JAX-WS可移植工件,使用以下命令,在工程中生成一个webservice客户端;

wsimport -encoding utf-8 -s D:\eclipseWorkspace\TestWS\src -p com.test.Hsbservice.impl -XdisableSSLHostnameVerification https://host:[port]/webService?wsdl1

导入证书 *由于使用的https的协议,这边需要将服务的证书导入到密钥库中。如果所提供的服务是http的则可以省略这个步骤 本项目中导入证书使用JDK自带的keytool工具,使用以下命令,来将证书导入到java环境的证书库中;

keytool -import -trustcacerts -alias casserver -file D:\Workspace\crtfilename.crt -keystore "C:\Program Files\Java\jdk1.8.0_251\jre\lib\security\cacerts"2

业务逻辑编写 先将生成的webservice客户端的类,拷贝到工程中,可以自行定义包路径,拷贝完按实际修改相应java文件中声明的包路径,基础的操作不做赘述,以下是主要的调用服务的代码;代码中的类和方法需要根据实际生成的webservice客户端类进行修改;可以按照注释说明,修改响应的命名空间,服务名称,接口类型,入参等;解析获取到的数据,进行业务逻编程; public class MainTest { public static void main(String[] args) throws Exception { // 创建WebService的URL地址 String url = "https://[host]:[port]/webservice?WSDL"; // 定义要调用的WebService命名空间和接口名称,分别是wsdl文档中描述的【targetNamespace】以及service 节点的Name属性 QName serviceName = new QName("http://example.com", "serviceName"); // 创建动态客户端对象 ,实际上也可以直接实例化生成的服务类 Service service = Service.create(new URL(url), serviceName); // 获取WebService接口类型,WebServiceInterface 为 wsdl文档中描述的service节点下的port节点的Name属性 WebServiceInterface portType = service.getPort(WebServiceInterface.class); // 调用WebService方法并传递参数,someMethod为 WebServiceInterface 中的方法 String result = portType.someMethod("parameter1", "parameter2", ...); System.out.println("Result from web service call: " + result); } } P&S P1:本例中代码主体为AI生成,参数该如何传? S1:阅读相关类和方法的源码,结合wsdl文档描述的接口信息进行摸索、尝试,最终得以解决;P1:运行失败?

错误信息: Exception in thread “main” javax.xml.ws.WebServiceException: class com.test.Hsbservice.impl.HIPManagerServer do not have a property of the name {http://www.dhcc.com.cn}action Caused by: javax.xml.bind.JAXBException: {http://www.dhcc.com.cn}action is not a valid property on class com.test.Hsbservice.impl.HIPManagerServer

S2:这个问题是因为,拷贝webservice客户端类时,没有将package-info.java这个文件拷贝过来,文件中定义了命名空间的相关信息,加上之后问题解决

-encoding 编码格式,-s 包路径,-p 包名, -XdisableSSLHostnameVerification 提取wsdl时禁用SSL主机名验证,最后是一个WSDL地址 ↩︎

执行时需要输入口令,默认口令是changeit,输入口令后屏幕输出证书信息,提示*【是否信任此证书】* 输入:y/n ,输入y提示证书添加到证书库中 ↩︎



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3